package com.clp.inflxudb.core.flux_function;

import com.clp.inflxudb.core.Flux;
import com.influxdb.query.FluxTable;

import java.util.List;

public interface FluxFunction{
    /**
     * 获取 排序和分页 的 FluxFunction
     * @param desc：是否按时间倒序（最近时间在前）
     * @param pageIdx：页号
     * @param pageSize：每页行数
     * @return
     */
    static FluxFunction getSortPageFluxFunction(Boolean desc, Integer pageIdx, Integer pageSize) {
        return new SortPageFluxFunction(desc, pageIdx, pageSize);
    }

    static FluxFunction getCountSumFluxFunction(String countKey) {
        return new CountSumFluxFunction(countKey);
    }

    /**
     * 添加自定义函数
     * @param flux
     */
    void doFunction(Flux flux);

    /**
     * 查询到结果之后
     * @param fluxTableList
     * @return
     */
    default void afterQuery(List<FluxTable> fluxTableList) {
    }
}
